ดึงข้อมูลจาก S3 โดยการใช้ Query ผ่าน Athena 【สำหรับมือใหม่!!】
สวัสดีครับ ไลท์ ครับ เจอกันอีกแล้วกับบทความดีๆเกี่ยวกับ AWS ครับ
วันนี้อยากจะมาแนะนำเกี่ยวกับการดึงข้อมูลจาก S3 โดยการใช้ Athena รวมถึงบันทึกข้อมูลการตั้งค่าต่างๆด้วย โดยในบทความนี้จะเหมาะกับมือใหม่มากๆมาลองทำไปด้วยกันเลยครับ
Amazon Athena คือ?
Amazon Athena เป็นบริการที่ 「สามารถใช้งาน SQL แล้ว query ข้อมูลจาก S3 ได้โดยตรง 」และเนื่องจากเป็นบริการแบบ serverless ที่พร้อมใช้งานได้ทันทีโดยไม่จำเป็นต้องวางโครงสร้าง infrastructure ยิ่งไปกว่านั้น Athena จะคิดค่าใช้จ่ายเฉพาะการทำ query โดยราคาจะอยู่ที่ ทุกๆ 1 TB เท่ากับ 5 USD
และในครั้งนี้จะมาลองดึงข้อมูลบน S3 โดยการ Query ด้วยคำสั่ง SELECT ผ่าน Athena กันครับ
เตรียมข้อมูลบน S3
เตรียมไฟล์ CSV ตามเนื้อหาทางด้านล่างนี้ (รายชื่อพนักงาน)
สร้าง S3 bucket ขึ้นมาแล้วอัพโหลดไฟล์เข้าไป
จากนั้นสร้าง S3 bucket แยกออกมาสำหรับเก็บข้อมูลของการทำ Query ผ่าน Athena
เท่านี้ก็จะเสร็จสิ้นการตั้งค่าในฝั่ง S3
การตั้งค่าฝั่ง Athena
ในการตั้งค่าฝั่ง Athena เราจะสร้าง table ผ่านฟังก์ชั่น Query editor
ในการงานใช้งาน Query editor ไปที่ด้านซ้ายบนของหน้าจอจะมีเมนู Query editor
หรือจะเป็นช่องทางด้านขวาที่เขียนว่า Explore the query editor
การตั้งค่าที่จัดเก็บ Query
Query editor จะเป็นหน้าจอทางด้านล่างครับ
โดยตั้งค่าที่จัดเก็บข้อมูลของ Query เป็น S3 bucket ก่อนครับ
เข้าไปตั้งค่าได้ ที่หัวข้อ settings
หรือ แถบตามภาพด้านล่าง view settings
ที่อยู่ตรงด้านขวาบนครับ
(ถ้าไม่ทำตั้งค่าที่นี่แล้วทำ Query เลย จะขึ้นแจ้ง error ครับ)
จากหน้าการตั้งค่าทางด้านล่าง ให้กดไปที่ปุ่ม Manage
เพื่อเข้าไปตั้งค่าที่จัดเก็บข้อมูล Query ครับ
เลือกที่ปุ่ม Browse s3
แล้วเลือก s3 bucket ที่สร้างไว้สำหรับเก็บข้อมูลการทำ Query ในขั้นตอนก่อนหน้านี้ครับ
ก็จะเสร็จสิ้นการตั้งค่า bucket สำหรับจัดเก็บ Query ครับ
การตั้งค่า Query editor (สร้าง Table)
ในการแสดงผลของทำการ Query ต้องมีการสร้าง table ก่อน ตามหน้าจอข้างล่างให้เลือกที่ Create
แล้วจะมีเมนูแยกออกมา เลือก S3 bucket data
หลังจากเข้ามาที่หน้านี้แล้ว จะเป็นการตั้งค่าต่างๆที่เกี่ยวกับการสร้าง table ไม่ว่าจะเป็น การตั้งชื่อ data base, ตั้งชื่อ table เป็นต้น
・ตั้งชื่อ Table
・เลือกCreate a database
และตั้งชื่อ data base
・ ระบุชื่อ bucket ที่มีไฟล์ CSV บันทึกอยู่
・เนื่องจากข้อมูลที่จะ Query เป็น CSV ให้เลือกเป็น CSV
・ตั้งค่าชื่อแถวของข้อมูลบน Table โดยสามารถเพิ่มแถวได้ที่ Add a column
・หลังจากตั้งค่า Table แล้วให้เลือกที่ Create Table
ทางด้านขวาล่างเพื่อสร้าง Table
ลองดึงข้อมูลจาก S3 ด้วย Query
กลับไปที่หน้า Query editor ที่หัวข้อ Database เลือก Data base ที่เราสร้างไว้ แล้วที่หัวข้อ Table ทางด้านล่างจะแสดงชื่อ Table ที่เราสร้างไว้ขึ้นมาครับ จากนั้นเลือกที่ปุ่ม 3 จุดทางด้านข้างจะแสดงเมนูต่างๆขึ้นมา ให้เลือกที่ Preview Table
แล้วบนตารางจะแสดง Query ที่ผ่านการสร้างด้วยคำสั่ง SELECT ครับ
ตัวอย่างคำสั่งที่สร้างผ่าน Query ครับ↓
SELECT * FROM "query_test_database_**********_1"."query_test_table_**********_1" limit 10;
และเมื่อลงมาดูทางด้านล่างจะเห็นว่าเราสามารถดึงข้อมูลได้แล้ว โดยเป็นการนำข้อมูลใน CSV ไฟล์จาก S3 มาเรียงใส่ตามแถวที่เราระบุไปในขั้นตอนก่อนหน้าครับ
ที่จัดเก็บข้อมูลของ Query
ข้อมูลที่ได้จากการใช้งาน Query จะถูกจัดเก็บใน S3 bucket ที่มีการลงทะเบียนไว้ใน Athena ก่อนหน้านี้ โดยจะถูกจัดเก็บในรูปแบบไฟล์ CSV ตามภาพด้านล่างนี้ครับ
เมื่อดาวน์โหลดไฟล์ออกมาแล้วตรวจสอบดูจะแสดงข้อมูลแบบเดียวกับที่แสดงบน Athena เลย
attended_floor | name | department | employee_number |
---|---|---|---|
6 | SATO | General affairs | 1 |
5 | TANAKA | Sales | 2 |
4 | ABE | Development | 3 |
3 | TAKAHASHI | QC | 4 |
2 | ITOU | Production technology | 5 |
1 | SUZUKI | Production control | 6 |
รายละเอียดการตั้งค่า table, database จะถูกบันทึกไว้ที่ Glue
สามารถตรวจสอบรายละเอียดของ table, database ที่เราสร้างไปได้ที่ Amazon Glue ครับ โดยไปที่ตารางทางด้านซ้ายเลือกที่หัวข้อ data base และ table ครับ และยังสามารถแก้ไขข้อมูลต่างๆไม่ว่าจะเป็น รูปแบบข้อมูล หรือ รายละเอียดที่เกี่ยวกับแถว ของ table ที่เราสร้างได้ที่นี่อีกด้วย
สุดท้ายนี้
ขอบคุณทุกท่านที่อ่านมาจนถึงจุดนี้ครับ เป็นยังไงกันบ้างครับ พอทำกันได้มั้ยครับ
ถ้าใครได้นำไปใช้จริงได้จะดีใจมากเลยครับ หวังว่าเนื้อหาในบทความนี้จะเป็นประโยชน์กับทุกท่านครับ